#ifndef _BASE_SHARED_HPP_
#define _BASE_SHARED_HPP_

#include <memory>
#include <iostream>

template<typename T>
class SharedBase {
public:
    using Ptr = std::shared_ptr<T>;

    template<typename... Args>
    static Ptr CreateShared(Args&&... args) {
        return std::make_shared<T>(std::forward<Args>(args)...);
    }
};

#endif // _BASE_SHARED_HPP_